#ifndef _BSP_BC26_H_
#define _BSP_BC26_H_

#include "bsp_uart.h"
#include "debug.h"
#include "tools.h"
#include "string.h"
#include "stdlib.h"
#include "protocol.h"



#define BC26_EINT_RCC			RCC_APB2Periph_GPIOA
#define BC26_REST_RCC			RCC_APB2Periph_GPIOB
#define BC26_KEY_RCC			RCC_APB2Periph_GPIOB

#define BC26_EINT_PORT		GPIOA
#define BC26_REST_PORT    GPIOB
#define BC26_KEY_PORT     GPIOB

#define BC26_EINT_PIN			GPIO_Pin_7
#define BC26_REST_PIN     GPIO_Pin_1
#define BC26_KEY_PIN      GPIO_Pin_0        



#define BC26_EINT					PAout(9)
#define BC26_EINT_L 			GPIO_ResetBits(BC26_EINT_PORT, BC26_EINT_PIN)
#define BC26_EINT_H 			GPIO_SetBits(BC26_EINT_PORT, BC26_EINT_PIN)
#define BC26_EINT_TOGGLE 	PAout(9) ^= (1<<0)

#define BC26_REST					PBout(1)
#define BC26_REST_L 			GPIO_ResetBits(BC26_REST_PORT, BC26_REST_PIN)
#define BC26_REST_H		 		GPIO_SetBits(BC26_REST_PORT, BC26_REST_PIN)
#define BC26_REST_TOGGLE 	PBout(1) ^= (1<<0)
	
#define BC26_KEY					PBout(0)
#define BC26_KEY_L 				GPIO_ResetBits(BC26_KEY_PORT, BC26_KEY_PIN)
#define BC26_KEY_H 				GPIO_SetBits(BC26_KEY_PORT, BC26_KEY_PIN)
#define BC26_KEY_TOGGLE 	PBout(0) ^= (1<<0)
	
	
	
	

void BC26_Init(void);
void BC26_BaudSynchronization(void);
uint8_t BC26_Connect(char *ip,uint32_t port);
uint8_t BC26_GetIP(void);
uint8_t BC26_GetNetStat(uint32_t waittime);
uint8_t BC26_GetIMEI(void);
void BC26_RecvHandle(uint8_t data);
uint8_t BC26_SendStr(char *data,uint8_t len);
uint8_t BC26_SendData(uint8_t *data,uint8_t len);
int8_t BC26_SendCmd(char *cmd,char *ack,int len,uint32_t waittime);
uint8_t BC26_NetStat(void);   
uint8_t BC26_CheckStat(void); 
uint8_t BC26_Parse(uint8_t data);

#endif
